#include "archivoNGramas.h"

archivoNGramas::archivoNGramas(string ruta) : indice(ruta) {
}

archivoNGramas::~archivoNGramas() {
}

int archivoNGramas::agregarNGrama(string NGrama, long idTerm) {
	ClaveNGrama clave(NGrama, idTerm);
	DatoNGrama dato;
	indice.insert(clave, dato);
	return 0;
}

vector<long> archivoNGramas::obtenerTerminos(string NGrama) {
	ClaveNGrama clave(NGrama, 0), claveAux;
	DatoNGrama dato;
	vector<long> terminos;
	indice.readMayorIgual(dato, clave);
	if(!indice.eof())
		claveAux=indice.getClave();
	while(!indice.eof() && clave[N_GRAMA]==claveAux[N_GRAMA])
	{
		dato=indice.getDato();
		terminos.push_back(claveAux.getIdTermino()); 
		indice.next();
		if(!indice.eof())
			claveAux=indice.getClave();
	}
	return terminos;
}

vector<ClaveNGrama> archivoNGramas::obtenerTodos()
{
	
	ClaveNGrama clave("$", 0), claveAux;
	DatoNGrama dato;
	vector<ClaveNGrama> listado;
	indice.readMayorIgual(dato, clave);
	if(!indice.eof())
		claveAux=indice.getClave();
	while(!indice.eof())
	{
		dato=indice.getDato();
		listado.push_back(claveAux); 
		indice.next();
		if(!indice.eof())
			claveAux=indice.getClave();
	}
	return listado;
		
}